/**
 * 注意，需要在终端运行才有效果，直接调试无法进入退出处理函数
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
 
void signal_handler(int signum) {
    printf("ctrl+c pressed!\n");
    printf("signal is: %d\n", signum);
    printf("in handler sleep!\n");
    usleep(5000);  // 按下 ctrl+c 后，此处 sleep 并不会阻塞程序运行
    printf("in handler awake!\n");
    exit(0);
}
 
int main() {
    int count = 0;
    signal(SIGINT, signal_handler);
    
    while (1) {
        printf("cnt=%d\n", count);
        ++count;
        sleep(1);
    }
    
    return 0;
}